home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Whiteline: Alpha
/
Whiteline Alpha.iso
/
lernen
/
10finger
/
10finger.lst
< prev
next >
Encoding:
Amiga
Atari
Commodore
DOS
FM Towns/JPY
Macintosh
Macintosh JP
Macintosh to JP
MacRoman (detected)
NeXTSTEP
RISC OS/Acorn
Shift JIS
UTF-8
Wrap
File List
|
1994-09-22
|
33.9 KB
|
1,176 lines
' ****************************************************************************
'
' 10_FINGER - ein Programm zum Erlernen des 10-Finger-Systems
'
' programmiert von Heiko Müller, Mozartstraße 17, 2905 Edewecht
'
' Version 1.0 abgeschlossen am 26.09.1987
Version$="2.03" ! aktuelle Version
Datum$="27.02.1990" ! Tag der letzten Bearbeitung
'
' ****************************************************************************
'
Cls
Hidem
Anfang%=Timer
Tippzahl%=0
Diskpfad$=Chr$(Gemdos(25)+65)+":"+Dir$(0)+"\"
'
Waehlart%=2 ! 1 = Übungsdateien werden mit Fileselectbox ausgesucht
' 2 = auszuwählende Dateien werden vom Programm vorgegeben
'
Musik!=True
Dim A$(150),X1%(150),X2%(150),Y1%(150),Y2%(150)
Dim Stufe%(150),Art$(150),Shift!(150),Finger%(150)
Dim Kleinkon$(50),Grosskon$(50),Zeich$(50),Vok$(50)
Dim Finger$(9),Pfeil_x%(9),Pfeil_y%(9)
Dim Spielzeichen$(29)
Gosub Bildbau
Deftext 1,16,0,32
Text 125,50,"Zehn-Finger-Lehrgang"
Deftext 1,0,0,4
Text 40,75,"programmiert in GfA-BASIC (Version 3.07) von Heiko Müller, Mozartstraße 17, 2905 Edewecht"
Text 40,85,"Version "+Version$+" vom "+Datum$
Text 40,100,"Dieses Programm wurde 1988 im Rahmen eines Schulsoftware-Wettbewerbs als Public-Domain-Programm"
Text 40,110,"geschrieben für die Zeitschrift ""ST-magazin"". Es wird vertrieben vom Markt-und Technik-Verlag"
Text 40,120,"auf der Schulsoftware-Diskette 5, ""Sprache, Sport"", Bestellnummer: 34805"
Do
Print At(5,24);"Erklärung mit der Taste [Help] oder Starten mit der Taste [F1]"
A$=Inkey$
Exit if Asc(Left$(A$))=0 And (Asc(Right$(A$))=98 Or Asc(Right$(A$))=59)
Pause 15
Print At(5,24);"Erklärung mit der Taste oder Starten mit der Taste "
A$=Inkey$
Exit if Asc(Left$(A$))=0 And (Asc(Right$(A$))=98 Or Asc(Right$(A$))=59)
Pause 15
Loop
If Asc(Right$(A$))=98
Gosub Erklaerung
Endif
Do ! Endlosschleife als Hauptprogramm
Showm
Defmouse 3
Gosub Stufe_eingeben
If Stufe%<9
Do
Gosub Uebungsstring_erstellen
Gosub Ueben
Exit if Stufe%=9
Loop
Endif
Gosub Frage_nach_hilfe
If Waehlart%=1
Gosub Text_aussuchen_1
Else
Gosub Text_aussuchen_2
Endif
'
Loop
'
Procedure Erklaerung
Cls
Print
Print " Gleich wird dir ein Bild gezeigt, auf dem du die Schwierigkeitsstufe aus-"
Print " wählen sollst. Die Buchstaben, die bei der gewählten Stufe geübt werden"
Print " sollen, sind schwarz unterlegt."
Print
Print " Wähle die gewünschte Stufe aus und tippe dann auf die Taste [Return] oder"
Print " klicke das Return-Feld mit der linken Maustaste an."
Print
Print " Das ganze Programm ist so geschrieben, daß du dir aussuchen kannst, ob du"
Print " deine Auswahl mit Hilfe der Maus oder der Tastatur treffen möchtest. Nur"
Print " beim Beenden des Programms kann man nicht auf die Maus verzichten."
Print
Print " Regle jetzt bitte die Lautstärke so, daß du die Tastenbetätigung hören"
Print " kannst (rechts am Monitor; unteres Stellrad). Probiere das mit einer belie-"
Print " bigen Taste aus. Wenn der Lautsprecher zu leise eingestellt ist, hast du"
Print " keine Kontrolle über Deine Tasteneingaben."
Print
Print " An jeder Stelle des Programms kann man mit der Taste [Esc] aufhören."
Print
Print
Print
Print " Das Programm beginnt nun mit einem Druck auf die Taste [F1].";
Repeat
A$=Inkey$
If Asc(A$)=27
Gosub Aufhoeren
Endif
Until Asc(Left$(A$))=0 And Asc(Right$(A$))=59
Return
'
Procedure Uebungsstring_erstellen
Ueb$=""
If Stufe%<9
Repeat
Wort$=""
If Stufe%>6
Wort$=Str$(Random(100))+" "
Endif
If Stufe%>5
Wort$=Wort$+Grosskon$(Random(Gko%))
Else
Wort$=Wort$+Kleinkon$(Random(Kko%))
Endif
Wort$=Wort$+Vok$(Random(Vo%))
Wort$=Wort$+Kleinkon$(Random(Kko%))
Wort$=Wort$+Vok$(Random(Vo%))
Wort$=Wort$+Kleinkon$(Random(Kko%))
Wort$=Wort$+Vok$(Random(Vo%))
If Stufe%>4
Wort$=Wort$+Kleinkon$(Random(Kko%))
Wort$=Wort$+Zeich$(Random(Ze%))
Endif
If Left$(Wort$,1)<>" "
Wort$=Wort$+" "
Endif
Ueb$=Ueb$+Wort$
Until Len(Ueb$)>65
Ueb$=Left$(Ueb$,65)
Endif
Return
'
Procedure Ueben
Abbruch!=False
Tippanfang%=Timer
L%=Len(Ueb$)
If Right$(Ueb$,1)=" "
Dec L%
Endif
Fehler%=0
Cls
Hidem
Print At(8,2);"Schwierigkeitsstufe ";Stufe%
Print At(8,7);"Übungstext bitte abschreiben:"
Print At(8,19);"[Esc] = Abbruch"
Rbox 40,120,600,220
Print Chr$(27);"e" ! Cursor einschalten
Print At(8,10);Ueb$
Print At(8,12);
For I%=1 To L%
X$=Mid$(Ueb$,I%,1)
Wiederholung%=0
Repeat
Repeat
A$=Inkey$
Until A$>""
If A$<>X$ And Asc(A$)<>27
Print Chr$(27);"j"; ! Cursorposition merken
Print A$;
Print Chr$(27);"k"; ! an gespeicherte Cursorposition gehen
Out 2,7
Inc Fehler%
Inc Wiederholung%
Inc Fehlerzahl%
Deftext 1,0,0,13
Text 56,253,Str$(Fehler%)
If Wiederholung%>1
Sget Bild$
Print Chr$(27);"f"; ! Cursor ausschalten
Print Chr$(27);"j"; ! Cursorposition merken
Gosub Hilfe
Print Chr$(27);"e"; ! Cursor anschalten
Print Chr$(27);"k"; ! an gespeicherte Cursorposition gehen
Sput Bild$
Endif
Endif
If Asc(A$)=27 And I%<50
Print " - abgebrochen"
Abbruch!=True
Endif
Exit if Asc(A$)=27
Until A$=X$
Exit if Asc(A$)=27
Print X$;
Inc Tippzahl%
Next I%
Tippzeit%=Tippzeit%+Timer-Tippanfang%
If Fehler%=0 And Musik! And Not Abbruch!
Sound 1,15,1,4,4
Sound 1,15,5,4,5
Sound 1,15,8,4,5
For I%=15 Downto 0
Sound 1,I%,1,5,5
Next I%
Endif
Print Chr$(27);"f" ! Cursor ausschalten
Print At(8,16);Fehler%;" Fehler"
Print At(8,7);" "
Abfrage: ! Abfrageschleife mit GOTO bis zum Ende der Procedure
Print At(8,18);"[Return] = Neuer Übungstext"
Print At(8,19);"[ F1 ] = Programmende"
Print At(8,20);"[ F2 ] = Schwierigkeitsstufe ändern"
Print At(8,21);"[ F3 ] = Zwischenspiel"
Print At(8,22);"[ F4 ] = Statistik"
If Fehler%=0 And Musik! And Not Abbruch!
Print At(8,23);"[ F10 ] = Musik ausschalten"
Endif
Repeat
A$=Inkey$
Rs%=Asc(Right$(A$))
Until Asc(Left$(A$))=0 And ((Rs%>58 And Rs%<63) Or Rs%=68) Or Asc(A$)=13
Showm
Defmouse 3
If Asc(Left$(A$))=0 And Rs%=59
Gosub Aufhoeren
Endif
If Asc(Left$(A$))=0 And Rs%=60
Gosub Stufe_eingeben
Endif
If Asc(Left$(A$))=0 And Rs%=61
Gosub Tippen
Goto Abfrage
Endif
If Asc(Left$(A$))=0 And Rs%=62
Gosub Statistik
Goto Abfrage
Endif
If Asc(Left$(A$))=0 And Rs%=68
If Musik!
Alert 0,"Die Musik kann am Ende einer|Übungszeile mit der Taste [F10]|wieder eingeschaltet werden.| ",1," Return ",Dummy%
Print At(8,23);Space$(30)
Musik!=False
Else
For I%=15 Downto 0
Sound 1,I%,1,5,5
Next I%
Musik!=True
Endif
Goto Abfrage
Endif
Return
'
Procedure Bildbau
For I%=0 To 8
Read Finger$(I%),Pfeil_x%(I%),Pfeil_y%(I%)
Next I%
Deftext 1,0,0,13
I%=0
Do
Inc I%
Read A$(I%),X1%(I%),X2%(I%),Y1%(I%),Y2%(I%)
'
If A$(I%)="Anf-strich" ! Das Anführungszeichen läßt sich nicht direkt lesen
A$(I%)=Chr$(34)
Endif
'
Read Stufe%(I%),Art$(I%),Shift!(I%),Finger%(I%)
Exit if A$(I%)="grossende"
Box X1%(I%),Y1%(I%),X2%(I%),Y2%(I%)
Text X1%(I%)+5,Y1%(I%)+15,A$(I%)
Loop
Color 0
Line 576,210,624,210 ! Unterteilung in Returntaste löschen
Color 1
Dec I%
Do
Inc I%
Read A$(I%),X1%(I%),X2%(I%),Y1%(I%),Y2%(I%)
Read Stufe%(I%),Art$(I%),Shift!(I%),Finger%(I%)
Exit if A$(I%)="ende"
Box X1%(I%),Y1%(I%),X2%(I%),Y2%(I%)
If Len(A$(I%))<2
Text X1%(I%)+5,Y1%(I%)+30,A$(I%)
Endif
Loop
Sget Tastbild$
Get 515,290,585,330,Capslock$
For I%=1 To 29
Read Spielzeichen$(I%)
Next I%
Return
'
Procedure Speicher_einlesen
I%=-1
Vo%=-1
Kko%=-1
Gko%=-1
Ze%=-1
Do
Inc I%
If Stufe%(I%)<=Stufe%
If Art$(I%)="vo" And Not Shift!(I%)
Inc Vo%
Vok$(Vo%)=A$(I%)
Endif
If Art$(I%)="ko" And Shift!(I%)
Inc Gko%
Grosskon$(Gko%)=A$(I%)
Endif
If Art$(I%)="ko" And Not Shift!(I%)
Inc Kko%
Kleinkon$(Kko%)=A$(I%)
Endif
If Art$(I%)="ze"
Inc Ze%
Zeich$(Ze%)=A$(I%)
Endif
Endif
Exit if A$(I%)="ende"
Loop
Inc Vo%
Inc Gko%
Inc Kko%
Inc Ze%
Return
'
Procedure Hilfe
Defline 1,5,0,1
Sput Tastbild$
If Einfuehrung!
Print At(5,24);"Einführung in Stufe ";Stufe%;
Print At(47,24);"[Esc] = Start des Übungstextes";
If Stufe%=6
Print At(5,2);" Die Shift-Tasten werden mit den kleinen Fingern gehalten."
Endif
If Stufe%=0
Print At(5,2);"Das Zeichen, das oben eingerahmt ist, soll getippt werden. Sieh"
Print At(5,3);"dabei möglichst wenig auf das Tastenbild unten auf dem Bildschirm!"
Endif
Endif
Deftext 1,0,0,32
Text 300,100,X$
Rbox 290,65,325,110
Graphmode 3
Such%=0
Repeat
Inc Such%
Until A$(Such%)=X$
Deffill 0,2,8
Pbox X1%(Such%),Y1%(Such%),X2%(Such%),Y2%(Such%)
F%=Finger%(Such%)
If Shift!(Such%)
If F%<5
Pbox 535,250,605,290
Else
Pbox 35,250,95,290
Endif
Endif
Deffill 1,1,1
If Pfeil_x%(F%)<>X1%(Such%) Or Pfeil_y%(F%)<>Y1%(Such%)
Line Pfeil_x%(F%)+20,Pfeil_y%(F%)+20,X1%(Such%)+20,Y1%(Such%)+20
Endif
Graphmode 1
Deftext 1,16,0,13
Text 450+400*(F%<5),80,Finger$(F%)
Capslock:
Cl%=Bios(11,-1) And 16
If Cl%=16
Graphmode 3
Deffill 1,2,1
Pbox 516,291,584,329
Else
Put 515,290,Capslock$
Endif
Graphmode 1
Capslock%=False
Daneben%=0
Repeat
Repeat
A$=Inkey$
Clo%=Bios(11,-1) And 16
If Clo%<>Cl%
Capslock%=True
Endif
Exit if Capslock%
Until A$>""
Exit if Capslock%
If A$<>X$
Inc Daneben%
If Daneben%>2
If Cl%=16
Deffill 0,1,1
Defline 1,5,2,2
Get 180,150,460,270,Sicher$
Pbox 180,150,460,270
Box 185,155,455,265
Print At(25,12);" Du hast mit der Taste CapsLock "
Print At(25,13);" auf Großschreibung umgestellt! "
Print At(25,14);" "
Print At(25,15);" Bitte zurückschalten! ";
Repeat
Clo%=Bios(11,-1) And 16
Until Clo%=0
Put 180,150,Sicher$
Daneben%=0
Endif
Endif
Endif
Until A$=X$ Or Asc(A$)=27
Defline 1,1,0,0
If Capslock%
Goto Capslock
Endif
Return
'
Procedure Stufe_eingeben
Repeat
Cls
Defline 1,1,2,2
If Stufenwahl$=""
Deftext 1,0,0,13
Print At(6,2);"Bitte Schwierigkeitsstufe auswählen (Taste oder Maus), dann [Return]"
Print At(6,5);"0 A S D F J K L Ö Anfänger"
Print At(6,7);"1 Q W E R U I O P"
Print At(6,9);"2 G H T Z"
Print At(6,11);"3 V B N M"
Print At(6,13);"4 Y X C , . -"
Print At(6,15);"5 Ä Ü ß"
Print At(6,17);"6 ! ? ; : _ und Großschreibung"
Print At(6,19);"7 1 2 3 4 5 6 7 8 9 0 + * < >"
Print At(6,21);"8 ";Chr$(34);" § $ % & / ( ) = ' ` # ^ Profi"
Print At(6,23);"9 gedruckte Texte abschreiben"
Print At(63,5);"Return"
Graphmode 1
For I%=1 To 10
Box 32,23+I%*32,320,55+I%*32
Next I%
Line 64,55,64,375
Box 480,55,560,87
For I%=0 To 6
Text 360,110+I%*32,"⇩"
Next I%
Sget Stufenwahl$
Else
Sput Stufenwahl$
Endif
Deffill 1,1,1
Graphmode 3
Pbox 32,55,320,87+Stufe%*32
Do
Mouse X%,Y%,K%
A$=Inkey$
Exit if K%=1 Or Asc(A$)=13
Exit if Asc(A$)>47 And Asc(A$)<59
Exit if Len(A$)=2 And (Right$(A$)="H" Or Right$(A$)="P")
'
If Asc(A$)=27
Gosub Aufhoeren
Endif
Loop
Exit if Asc(A$)=13
Repeat
Until Mousek=0
If Asc(A$)>47 And Asc(A$)<58
Stufe%=Val(A$)
Endif
If K%=1 And X%>32 And X%<320 And Y%>55 And Y%<375
Stufe%=Int((Y%-23)/32)-1
Endif
If Right$(A$)="H" And Stufe%>0
Dec Stufe%
Endif
If Right$(A$)="P" And Stufe%<9
Inc Stufe%
Endif
Until X%>480 And X%<560 And Y%>55 And Y%<87
If Stufe%<9
Graphmode 1
Deffill 0,1,1
Pbox 330,0,600,400
Gosub Speicher_einlesen
Print At(6,2);Space$(60)
Print At(50,17);"Wünschst Du eine Einführung"
Print At(50,18);"in Stufe"'Stufe%'"?"
Print At(50,21);" Ja Nein"
Box 390,311,510,342
Line 450,311,450,342
Do
Mouse X%,Y%,K%
Exit if K%=1 And X%>390 And X%<510 And Y%>311 And Y%<342
S$=Inkey$
Exit if S$="J" Or S$="j" Or S$="N" Or S$="n"
'
If Asc(S$)=27
Gosub Aufhoeren
Endif
Loop
If S$="J" Or S$="j" Or (K%=1 And X%<450)
Gosub Einfuehrung
Endif
Endif
Return
Procedure Einfuehrung
Einfuehrung!=True
Do
Restore Einfuehrung
Repeat
Repeat
Read I%,Ueb$
Until I%=Stufe% Or I%=9
If I%<9
For I%=1 To Len(Ueb$)
X$=Mid$(Ueb$,I%,1)
Gosub Hilfe
Exit if Asc(A$)=27
Next I%
Endif
Until Asc(A$)=27 Or I%=9
Exit if Asc(A$)=27
Loop
Einfuehrung!=False
Cls
Pause 20
Return
Procedure Aufhoeren
Alert 2," Soll das Programm | wirklich beendet werden? ",2," ja | nein ",Antw%
If Antw%=1
Schluss!=True
Gosub Statistik
End
Endif
Return
'
Procedure Statistik
Hidem
Uebzeit%=Int((Timer-Anfang%)/200) ! Umrechnung TIMER --> Sekunden
Stunden%=Int(Uebzeit%/3600)
Minuten%=Int(Uebzeit%/60)-Stunden%*60
Sekunden%=Uebzeit%-Stunden%*3600-Minuten%*60
If Tippzeit%>0
Tippquote%=Int(Tippzahl%*12000/Tippzeit%)
Endif
If Tippzahl%>0
Fehlerquote#=Int((Fehlerzahl%/Tippzahl%*100)*10)/10
Endif
Cls
Print At(10,3);"Statistik"
Print At(10,6);"Du hast jetzt ";
If Stunden%>0
Print Stunden%;" Stunde";
If Stunden%=1
Print ", ";
Else
Print "n, ";
Endif
Endif
If Minuten%>0 Or Stunden%>0
Print Minuten%;" Minute";
If Minuten%=1
Print " und ";
Else
Print "n und ";
Endif
Endif
Print Sekunden%;" Sekunden"
Print At(10,7);"mit diesem Programm gearbeitet."
Print At(10,9);"In den Übungstexten hast du insgesamt ";Tippzahl%;" Zeichen getippt. Dabei"
Print At(10,10);"hast du durchschnittlich ";Tippquote%;" Anschläge pro Minute geschafft."
Print At(10,12);"Insgesamt hast du ";Fehlerzahl%;" Fehler gemacht."
Print At(10,13);"Das entspricht einer Fehlerquote von ";Fehlerquote#;"%"
Print
Print At(10,15);"weiter mit beliebiger Taste oder Mausklick"
'
If Not Schluss!
Print At(10,16);"[ 0 ] = Fehlerzahl und Geschwindigkeitsmessung auf Null setzen"
Endif
Rbox 50,25,590,265
Line 50,60,590,60
Repeat
I$=Inkey$
Until I$>"" Or Mousek
If I$="0"
Tippzeit%=0
Tippzahl%=0
Tippquote%=0
Fehlerzahl%=0
Fehlerquote#=0
Endif
Showm
Return
Procedure Tippen
Cls
Deftext 1,16,0,32
Print At(4,5);"Es kommt darauf an, bis zum Ablauf der Zeit"
Print At(4,6);"möglichst viele der Zufallsbuchstaben zu tippen."
Print At(4,7);"Groß- oder Kleinschreibung spielt keine Rolle."
Print At(4,9);"Mit der Leertaste geht's los."
Restore Spielstufen
For I%=0 To Stufe%
Read X%
Next I%
Repeat
Until Inkey$=" "
Cls
Repeat
Zeit%=1000
Treffer%=0
Box 280,252,340,274
Do
Print At(35,8);Treffer%'"Treffer "
X$=Spielzeichen$(Random(X%)+1)
Text 300,200,X$
Repeat
A$=Upper$(Inkey$)
Dec Zeit%
Print At(38,17);Zeit%;'
Exit if Zeit%<1
Pause 1
Until A$=X$ Or Asc(A$)=27
Inc Treffer%
Exit if Zeit%<1 Or Asc(A$)=27
Loop
Exit if Asc(A$)=27
For I%=15 Downto 0
Sound 1,I%,1,4,4
Next I%
Print At(4,22);"nochmal ? (J/N)"
Repeat
A$=Inkey$
Until A$="J" Or A$="N" Or A$="j" Or A$="n"
Until A$="N" Or A$="n"
Cls
Return
'
Procedure Frage_nach_hilfe
Abbruch!=False
Cls
Print At(15,15);"[ Help ] = Erklärung (oder beide Maustasten)"
Print At(15,16);"[ Return ] = weiter (oder rechte Maustaste)"
Do
A$=Inkey$
Exit if (Asc(Left$(A$))=0 And (Asc(Right$(A$))=98)) ! Help-Taste
Exit if Asc(A$)=13 Or Asc(A$)=27
Mouse X%,Y%,K%
Exit if K%>1
Loop
If Asc(Right$(A$))=98 Or K%=3
Gosub Erklaerung2
Endif
If Asc(A$)=27
Abbruch!=True
Endif
Return
'
Procedure Text_aussuchen_1
If Not Abbruch!
Repeat
Repeat
Cls
Print
Print " Bitte die gewünschte Übungstext-Datei mit der linken Maustaste anklicken,"
Print " dann das Feld [OK] anklicken oder [Return] tippen."
Print At(1,24);" Übungstexte enthalten das Anhängsel .UEB. Sie befinden sich normalerweise"
Print " im Ordner UEBTEXTE, der durch Anklicken geöffnet wird.";
Fileselect "\*.ueb","",Pfad$
If Not Exist(Pfad$)
Abbruch!=True
Endif
Exit if Abbruch!
Gosub Text_einladen
Until A$="J" Or A$="j" Or (K%=1 And X%<235)
Exit if Abbruch!
Tippanfang%=Timer
Fehler%=0
Daneben!=False
Cls
Print " Schreibe bitte den gedruckten Übungstext ab. [Esc] = Abbruch"
Print Chr$(27);"e" ! Cursor einschalten
Zeile%=0
Print " ";
For S%=1 To L%
Inc Zeile%
X$=Mid$(Uebungstext$,S%,1)
Repeat
Repeat
A$=Inkey$
Until A$>""
If A$=" " And X$=Chr$(13) And Zeile%>50
A$=X$
Endif
Exit if Asc(A$)=27
If A$<>X$ And Asc(A$)<>27
Daneben!=True
Out 2,7
Inc Fehler%
Inc Wiederholung%
Inc Fehlerzahl%
Print Chr$(27);"j"; ! Cursorposition merken
Print A$;
Print Chr$(27);"k"; ! an gespeicherte Cursorposition gehen
Endif
Exit if Asc(A$)=27
Until A$=X$
Exit if Asc(A$)=27
If Daneben!
Daneben!=False
If X$<>Chr$(13)
Print Chr$(27);"p"; ! inverse Darstellung einschalten
Print X$;
Print Chr$(27);"q"; ! inverse Darstellung ausschalten
Else
Zeile%=0
Print Chr$(27);"p"; ! inverse Darstellung einschalten
Print " ";
Print Chr$(27);"q"; ! inverse Darstellung ausschalten
Print X$;Chr$(10);" ";
Endif
Else
Print X$;
If X$=Chr$(13)
Zeile%=0
Print Chr$(10);" ";
Endif
Endif
If (X$=" " Or X$="-") And Mid$(Uebungstext$,(S%+1),1)=Chr$(13)
Inc S%
Zeile%=0
Print Chr$(13);Chr$(10);" ";
Endif
Inc Tippzahl%
Next S%
Tippzeit%=Tippzeit%+Timer-Tippanfang%
Print Chr$(27);"f" ! Cursor ausschalten
Print
Print 'Fehler%;" Fehler ";
Was_nun:
Print " [Return] = Neuer Text [ F2 ] = Neue Schwierigkeitsstufe"
Print " [ F1 ] = Programmende [ F3 ] = Zwischenspiel [ F4 ] = Statistik;"
Repeat
A$=Inkey$
Rs%=Asc(Right$(A$))
If Asc(Left$(A$))=0 And Rs%=59
Gosub Aufhoeren
Endif
If Asc(Left$(A$))=0 And Rs%=61
Gosub Tippen
Print At(1,20)
Goto Was_nun
Endif
If Asc(Left$(A$))=0 And Rs%=62
Gosub Statistik
Print At(1,20)
Goto Was_nun
Endif
Until Asc(A$)=13 Or Rs%=60
Until Rs%=60
Endif
Return
'
Procedure Text_aussuchen_2
If Not Abbruch!
Cls
If Startzahl%+Textzahl%=0
Print At(2,2);"Bitte warten! Die Dateien auf der Diskette werden untersucht."
'
Dir "x.y" ! ohne diese Zeile merkt das Programm manchmal nicht,
' wenn die Diskette gewechselt wurde.
I%=0
Do
Inc I%
I$=Diskpfad$+"UEBTEXTE\START_"+Str$(I%)+".UEB"
Exit if Not Exist(I$)
Loop
Startzahl%=I%-1
'
I%=0
Do
Inc I%
I$=Diskpfad$+"UEBTEXTE\TEXT_"+Str$(I%)+".UEB"
Exit if Not Exist(I$)
Loop
Textzahl%=I%-1
Endif
Cls
If Startzahl%+Textzahl%=0
Print At(2,2);"Auf dieser Diskette befinden sich leider keine Texte zum Abschreiben!"
Print
Print " Du brauchst die Diskette, auf der sich der Ordner ""UEBTEXTE"" befindet."
Print " In diesem Ordner müssen sich die Dateien ""START..."" oder ""TEXT..."" befinden."
Print
Print
Print " Taste oder Mausklick"
Repeat
Until Mousek Or Inkey$>""
Goto Abbruch
Endif
'
Repeat ! Schleife zum wiederholten Bearbeiten eines Textes
'
Repeat ! Schleife zum Aussuchen des Textes
Cls
Print At(2,2);"Auf der Diskette sind ";Startzahl%'"Einführungstexte"
Print " und ";Textzahl%'"Übungstexte gespeichert."
Print
Print " Welche Art von Texten möchtest Du bearbeiten?"
Print At(20,7);"Einführung Übung"
Graphmode 1
Box 140,90,240,120
Box 240,90,340,120
Do
I$=Upper$(Inkey$)
Mouse X%,Y%,K%
If K% And X%>140 And X%<340 And Y%>90 And Y%<120
If X%<=240
I$="E"
Else
I$="U"
Endif
Endif
Exit if I$="E" And Startzahl%>0
Exit if (I$="Ü" Or I$="U") And Textzahl%>0
If Asc(I$)=27
Goto Abbruch
Endif
Loop
If I$="E"
Pfad$=Diskpfad$+"UEBTEXTE\START_"
Text$="Einführungs"
J%=Startzahl%
Else
Pfad$=Diskpfad$+"UEBTEXTE\TEXT_"
Text$="Übungs"
J%=Textzahl%
Endif
'
Print At(2,10);"Gib bitte die Nummer des gewünschten ";Text$;"textes ein"
Print " und tippe dann auf die Taste [Enter] :"
Repeat
Print At(41,11);
Input "",I$
I%=Abs(Int(Val(I$)))
Until I%>0 And I%<=J%
Pfad$=Pfad$+Str$(I%)+".UEB"
Gosub Text_einladen
Until A$="J" Or A$="j" Or (K%=1 And X%<235)
Gosub Text_tippen
Until I%=60
Abbruch:
Endif
Return
'
Procedure Text_einladen
Open "I",#1,Pfad$
Uebungstext$=""
I%=0
Cls
Print
Do
Inc I%
Line input #1;Text$
Uebungstext$=Uebungstext$+Text$+Chr$(13)
If I%<24
Print 'Text$;Chr$(13);Chr$(10);
Endif
Exit if Eof(#1)
Loop
Close #1
Graphmode 1
Deffill 1,2,8 ! schwarz
Defline 1,1,2,2
Pbox 155,245,455,365
Deffill 0,2,8 ! weiß
Pbox 150,250,450,370
Box 150,250,450,370
L%=Len(Uebungstext$)
While Asc(Right$(Uebungstext$,1))<33
Uebungstext$=Left$(Uebungstext$,L%-1)
Dec L%
Wend
Print At(22,17);"Dieser Text wurde eingelesen."
Print At(22,18);"Er hat ";L%;" Zeichen."
Print At(22,20);"Ist das der richtige?"
Print At(22,22);" Ja Nein"
Defline 1,1,2,2
Box 170,330,270,355
Line 220,330,220,355
Do
A$=Inkey$
Exit if A$="j" Or A$="J" Or A$="n" Or A$="N"
Mouse X%,Y%,K%
Exit if X%>170 And X%<270 And Y%>330 And Y%<355 And K%=1
If Asc(A$)=27
Goto Abbruch
Endif
Loop
Return
'
Procedure Text_tippen
Tippanfang%=Timer
Fehler%=0
Daneben!=False
Cls
Print " Schreibe bitte den gedruckten Übungstext ab. [Esc] = Abbruch"
Print Chr$(27);"e" ! Cursor einschalten
Zeile%=0
Print " ";
For I%=1 To L%
Inc Zeile%
X$=Mid$(Uebungstext$,I%,1)
Repeat
Repeat
A$=Inkey$
Until A$>""
If A$=" " And X$=Chr$(13) And Zeile%>50
A$=X$
Endif
Exit if Asc(A$)=27
If A$<>X$ And Asc(A$)<>27
Daneben!=True
Out 2,7
Inc Fehler%
Inc Wiederholung%
Inc Fehlerzahl%
Print Chr$(27);"j"; ! Cursorposition merken
Print A$;
Print Chr$(27);"k"; ! an gespeicherte Cursorposition gehen
Endif
Exit if Asc(A$)=27
Until A$=X$
Exit if Asc(A$)=27
If Daneben!
Daneben!=False
If X$<>Chr$(13)
Print Chr$(27);"p"; ! inverse Darstellung einschalten
Print X$;
Print Chr$(27);"q"; ! inverse Darstellung ausschalten
Else
Zeile%=0
Print Chr$(27);"p"; ! inverse Darstellung einschalten
Print " ";
Print Chr$(27);"q"; ! inverse Darstellung ausschalten
Print X$;Chr$(10);" ";
Endif
Else
Print X$;
If X$=Chr$(13)
Zeile%=0
Print Chr$(10);" ";
Endif
Endif
If (X$=" " Or X$="-") And Mid$(Uebungstext$,(I%+1),1)=Chr$(13)
Inc I%
Zeile%=0
Print Chr$(13);Chr$(10);" ";
Endif
Inc Tippzahl%
Next I%
Tippzeit%=Tippzeit%+Timer-Tippanfang%
Print Chr$(27);"f" ! Cursor ausschalten
Print
Print 'Fehler%;" Fehler"
Repeat
Print
Print " [Return] = Neuer Text [ F2 ] = Neue Schwierigkeitsstufe"
Print " [ F1 ] = Programmende [ F3 ] = Zwischenspiel [ F4 ] = Statistik;"
Repeat
A$=Inkey$
I%=Asc(Right$(A$))
Until A$>""
Exit if Asc(A$)=27
If Asc(Left$(A$))=0 And I%=59 ! F1
Gosub Aufhoeren
Endif
If Asc(Left$(A$))=0 And I%=61 ! F3
Gosub Tippen
Endif
If Asc(Left$(A$))=0 And I%=62 ! F4
Gosub Statistik
Endif
Cls
Until Asc(A$)=13 Or I%=60 ! Return oder F2
Return
'
Procedure Erklaerung2
Cls
Print
Print " Wenn Du in dieser Schwierigkeitsstufe arbeiten willst, brauchst Du ausge-"
Print " druckte Texte zum Abschreiben. Die Texte befinden sich im Ordner ""UEBTEXTE""."
Print " Wenn Du sie nicht in ausgedruckter Form vorliegen hast, kannst Du an dieser"
Print " Stelle nicht weitermachen. Tippe dann auf die Taste [Esc]."
Print
Print " Beim Abschreiben kannst Du am Zeilenende mit [Return] in die nächste Zeile"
Print " kommen - wie bei einer Schreibmaschine - oder einfach mit einem Leeranschlag"
Print " zum nächsten Wort weitergehen - wie bei einem Textverarbeitungsprogramm. Dies"
Print " funktioniert allerdings nicht am Ende eines Absatzes (mitten in einer Zeile)"
Print " oder bei Trennungsstrichen!"
Print
Print " Fehler werden durch einen Glockenton signalisiert. Das Programm arbeitet"
Print " erst weiter, wenn das richtige Zeichen getippt ist, jedoch bleibt die Stelle,"
Print " an der der Fehler gemacht wurde, markiert (und der Fehler wird gezählt)."
Print
Print " Das Ausdrucken der Übungstexte geht am besten mit Hilfe eines Textverarbei-"
Print " tungsprogramms. Zur Not geht es auch vom Desktop aus. Wie das geht, findest"
Print " Du in der Bedienungsanleitung des Computers. Bei dieser Ausdruckart wird"
Print " aber wahrscheinlich das ß (und vielleicht auch die Umlaute ä, ö und ü) nicht"
Print " richtig ausgedruckt."
'
Print
Print
Print " [Return] oder Mausklick = weiter [Esc] = Abbruch";
Do
A$=Inkey$
Exit if Asc(A$)=27 Or Asc(A$)=13
Exit if Mousek
Loop
Return
' *********
Data Daumen,155,290,kleiner Finger,115,210,Ringfinger,155,210,Mittelfinger,195,210,Zeigefinger,235,210
Data Zeigefinger,355,210,Mittelfinger,395,210,Ringfinger,435,210,kleiner Finger,475,210
' *********
' Reihenfolge der Daten: Zeichen, X-Wert oben links, X-Wert unten rechts,
' Y-Wert oben links, Y-Wert unten rechts,
' Stufe, Art, Shift oder nicht, Fingernummer
' ********* obere Reihe
Data Esc,35,85,130,170,9,9,9,9
Data !,85,125,130,170,6,ze,-1,1
Data Anf-strich,125,165,130,170,8,ze,-1,1
' Kleiner Umweg, da Anführungszeichen sich nicht allein einlesen läßt
Data §,165,205,130,170,8,ze,-1,2
Data $,205,245,130,170,8,ze,-1,3
Data %,245,285,130,170,8,ze,-1,4
Data &,285,325,130,170,8,ze,-1,4
Data /,325,365,130,170,8,ze,-1,5
Data (,365,405,130,170,8,ze,-1,5
Data ),405,445,130,170,8,ze,-1,6
Data =,445,485,130,170,8,ze,-1,7
Data ?,485,525,130,170,6,ze,-1,8
Data `,525,565,130,170,8,ze,-1,8
Data ^,565,605,130,170,8,ze,-1,8
' ********* zweite Reihe von oben
Data Tab,35,105,170,210,9,9,9,9
Data Q,105,145,170,210,9,ko,-1,1
Data W,145,185,170,210,6,ko,-1,2
Data E,185,225,170,210,6,vo,-1,3
Data R,225,265,170,210,6,ko,-1,4
Data T,265,305,170,210,6,ko,-1,4
Data Z,305,345,170,210,6,ko,-1,5
Data U,345,385,170,210,6,vo,-1,5
Data I,385,425,170,210,6,vo,-1,6
Data O,425,465,170,210,6,vo,-1,7
Data P,465,505,170,210,6,ko,-1,8
Data Ü,505,545,170,210,6,vo,-1,8
Data *,545,585,170,210,7,ze,-1,8
Data ,585,625,170,210,9,9,9,9
' ********* dritte Reihe von oben
Data Control,35,115,210,250,9,9,9,9
Data A,115,155,210,250,6,vo,-1,1
Data S,155,195,210,250,6,ko,-1,2
Data D,195,235,210,250,6,ko,-1,3
Data F,235,275,210,250,6,ko,-1,4
Data G,275,315,210,250,6,ko,-1,4
Data H,315,355,210,250,6,ko,-1,5
Data J,355,395,210,250,6,ko,-1,5
Data K,395,435,210,250,6,ko,-1,6
Data L,435,475,210,250,6,ko,-1,7
Data Ö,475,515,210,250,6,vo,-1,8
Data Ä,515,555,210,250,6,vo,-1,8
Data Return,555,625,210,250,9,9,9,9
' ********* vierte Reihe von oben
Data Shift,35,95,250,290,9,9,9,9
Data >,95,135,250,290,7,ze,-1,1
Data Y,135,175,250,290,6,vo,-1,1
Data Y,135,175,250,290,6,ko,-1,1
Data X,175,215,250,290,6,ko,-1,2
Data C,215,255,250,290,6,ko,-1,3
Data V,255,295,250,290,6,ko,-1,4
Data B,295,335,250,290,6,ko,-1,4
Data N,335,375,250,290,6,ko,-1,5
Data M,375,415,250,290,6,ko,-1,5
Data ;,415,455,250,290,6,ze,-1,6
Data :,455,495,250,290,6,ze,-1,7
Data _,495,535,250,290,6,ze,-1,8
Data Shift,535,605,250,290,9,9,9,9
' ********* unterste Reihe
Data Altern,95,155,290,330,9,9,9,9
Data ,155,515,290,330,0,9,0,0
Data CapsLock,515,585,290,330,9,9,9,9
Data grossende,0,0,0,0,0,0,0,0
' ********* obere Reihe
Data 1,85,125,130,170,7,za,0,1
Data 2,125,165,130,170,7,za,0,1
Data 3,165,205,130,170,7,za,0,2
Data 4,205,245,130,170,7,za,0,3
Data 5,245,285,130,170,7,za,0,4
Data 6,285,325,130,170,7,za,0,4
Data 7,325,365,130,170,7,za,0,5
Data 8,365,405,130,170,7,za,0,5
Data 9,405,445,130,170,7,za,0,6
Data 0,445,485,130,170,7,za,0,7
Data ß,485,525,130,170,7,ze,0,8
Data ',525,565,130,170,8,ze,0,8
Data #,565,605,130,170,8,ze,0,8
' ********* zweite Reihe
Data q,105,145,170,210,9,ko,0,1
Data w,145,185,170,210,1,ko,0,2
Data e,185,225,170,210,1,vo,0,3
Data r,225,265,170,210,1,ko,0,4
Data t,265,305,170,210,2,ko,0,4
Data z,305,345,170,210,2,ko,0,5
Data u,345,385,170,210,1,vo,0,5
Data i,385,425,170,210,1,vo,0,6
Data o,425,465,170,210,1,vo,0,7
Data p,465,505,170,210,1,ko,0,8
Data ü,505,545,170,210,5,vo,0,8
Data +,545,585,170,210,7,ze,0,8
' ********* dritte Reihe von oben
Data a,115,155,210,250,0,vo,0,1
Data s,155,195,210,250,0,ko,0,2
Data d,195,235,210,250,0,ko,0,3
Data f,235,275,210,250,0,ko,0,4
Data g,275,315,210,250,2,ko,0,4
Data h,315,355,210,250,2,ko,0,5
Data j,355,395,210,250,0,ko,0,5
Data k,395,435,210,250,0,ko,0,6
Data l,435,475,210,250,0,ko,0,7
Data ö,475,515,210,250,0,vo,0,8
Data ä,515,555,210,250,5,vo,0,8
' ************ vierte Reihe von oben
Data <,95,135,250,290,7,ze,0,1
Data y,135,175,250,290,4,vo,0,1
Data x,175,215,250,290,4,ko,0,2
Data c,215,255,250,290,4,ko,0,3
Data v,255,295,250,290,3,ko,0,4
Data b,295,335,250,290,3,ko,0,4
Data n,335,375,250,290,3,ko,0,5
Data m,375,415,250,290,3,ko,0,5
Data ",",415,455,250,290,4,ze,0,6
Data .,455,495,250,290,4,ze,0,7
Data -,495,535,250,290,4,ze,0,8
' ********* Zeichen, die aus mehreren Buchstaben bestehen
Data Qu,0,0,0,0,6,ko,-1,9
Data qu,0,0,0,0,1,ko,0,9
Data tz,0,0,0,0,2,ko,0,9
Data st,0,0,0,0,2,ko,0,9
Data ck,0,0,0,0,4,ko,0,9
Data ng,0,0,0,0,3,ko,0,9
Data Ch,0,0,0,0,6,ko,-1,9
Data ch,0,0,0,0,4,ko,0,9
Data Sch,0,0,0,0,6,ko,-1,9
Data sch,0,0,0,0,4,ko,0,9
Data ei,0,0,0,0,1,vo,0,9
Data eu,0,0,0,0,1,vo,0,9
Data au,0,0,0,0,1,vo,0,9
Data ai,0,0,0,0,1,vo,0,9
Data äu,0,0,0,0,5,vo,0,9
Data ee,0,0,0,0,1,vo,0,9
Data oo,0,0,0,0,1,vo,0,9
Data ie,0,0,0,0,1,vo,0,9
' *********
Data ende,0,0,0,0,0,0,0,0
' *********
Data A,S,D,F,J,K,L,Ö,Q,W,E,R,U,I,O,P,T,Z,G,H,V,B,N,M,Y,X,C,V,Ä,Ü
Spielstufen:
Data 8,16,20,24,27,29,29,29,29,29
' *********
' Die folgenden Texte werden bei der Einführung eingelesen.
' Vorne steht die dazugehörige Schwierigkeitsstufe. Es dürfen beliebig
' viele neue Übungszeilen hinzugefügt werden. Bei der Einführung werden
' sie der Reihe nach immer wieder von vorne eingelesen.
' *********
Einfuehrung:
Data 0,asdfölkj fdsajklö adsföklj afkjöfls djslakös jösfklfaö
Data 1,aqswdefrjukiloöpasdfqwerölkjpoiufrfjjujöpöpöfqfaqaqf
Data 2,fgfgfgjhjhjhftftftjzjzjzfgtfrfjhzjatfagafatarföjöhözöujsrzltahrögu
Data 3,fvfbfvfbjmjnjmjnfrftfgfbfvjujzjhjnjmgztuvmbnfjghtzruzntumnhutfgrbfjuzht
Data 4,"aysxdck,l.ö-fyfxfcj,j.j-scyak-.kc,daqayswsxdedcqyqyakik,lol.öpöp-p-ö"
Data 5,"öäöäöpöüöpöüöpößöpößöjöjäjüjpjßj-jöj-jäjüjpjßkäkökükpk-kökßk"
Data 6,"AaBbCcdDeEFfGghHiIjJKkLlmMNnoOpPQqrRsSTtUuvVWwXxYyzZäÄöÖüÜ"
Data 6,"k,k;k,k;l.l:l.l:ö-ö_ö-ö-öaqa!aqa!ßö?ößö?kik,lol.öpö-j-j_jäj?a!y!-_-?"
Data 7,a1a2s3d4f5f6j7k8l9ö0+0*8as12df34fg56jk78lö90a<a>y<y>öäö+ö*ößö
Data 7,"aqa1a2aqayasws3swsxsded4dedcdfrf5frf6fvfjuj7juj8jmjkik9kik,klol0lol.l"
Data 7,1357924680+17364941349+7085461028157+93641467930353+04891349762
Data 8,"1!a2"s3§d4$f5%f6&g7/h8(9)k0=l'`ö'`ä#^+ä#^+ä"
Data 8,"a1aya2aya"frf5f%fvf6f&j8j7j(j/jnößö?ö'ö`ööäö+ö#ö^ö"
Data 9,9